@mdzip/editor 1.2.6 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +12 -0
- package/README.md +38 -0
- package/dist/rendering.d.ts.map +1 -1
- package/dist/rendering.js +21 -2
- package/dist/rendering.js.map +1 -1
- package/dist/view-css.d.ts.map +1 -1
- package/dist/view-css.js +154 -4
- package/dist/view-css.js.map +1 -1
- package/dist/view.d.ts +105 -6
- package/dist/view.d.ts.map +1 -1
- package/dist/view.js +873 -67
- package/dist/view.js.map +1 -1
- package/dist/workspace.d.ts +63 -0
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +369 -9
- package/dist/workspace.js.map +1 -1
- package/package.json +7 -4
package/AGENTS.md
CHANGED
|
@@ -24,3 +24,15 @@ Use `controls: { preset: 'hosted-editor' }` for VS Code and other native hosts.
|
|
|
24
24
|
**Performance**
|
|
25
25
|
|
|
26
26
|
`archiveBytesWithPendingText()` skips redundant ZIP rebuilds when pending text has not changed. This optimization is critical for large documents during paste operations and similar workflows that trigger multiple rebuild cycles.
|
|
27
|
+
|
|
28
|
+
**Documents vs assets (since 1.3.0)**
|
|
29
|
+
|
|
30
|
+
Markdown files live in `workspace.documents`; everything else lives in `workspace.assets`. `removeAsset()` only removes assets — use `removeFile()` to delete either kind (it refuses the entry-point document and `manifest.json`). `renameFile()` also moves files and rewrites markdown references. `setEntryPoint()` and `setCoverImage()` update the manifest through `updateManifest`.
|
|
31
|
+
|
|
32
|
+
**Nav-pane file management gating (since 1.3.0)**
|
|
33
|
+
|
|
34
|
+
The context menu's mutating items and drag-and-drop are gated by the `fileActions` control-policy flag (true in `standalone-editor`/`hosted-editor`), not by `orphanActions`. Copy/Download items are non-mutating and appear even in read-only mode. Files are draggable whenever the workspace is editable — dragging onto the editor inserts a markdown link and does not require `fileActions`.
|
|
35
|
+
|
|
36
|
+
**`onConversionRequested` hook (since 1.3.0)**
|
|
37
|
+
|
|
38
|
+
Hosts intercept the markdown→MDZ conversion flow by returning/resolving `true` from `onConversionRequested(action)`. This replaces the old capture-phase paste workaround in VS Code-style hosts. A rejecting hook reports to `onFailed` and falls back to the built-in dialog.
|
package/README.md
CHANGED
|
@@ -100,6 +100,44 @@ Structured callbacks are available for workspace, document, asset, manifest,
|
|
|
100
100
|
selection, dirty, validation, and snapshot changes. Asset hosts can also call
|
|
101
101
|
`addAsset()`, `replaceAsset()`, `removeAsset()`, and `listAssets()`.
|
|
102
102
|
|
|
103
|
+
## File Management (navigation pane)
|
|
104
|
+
|
|
105
|
+
With `controls: 'standalone-editor'` or `'hosted-editor'` (or `fileActions: true`
|
|
106
|
+
in a custom policy), the navigation pane offers a right-click context menu: new
|
|
107
|
+
`.md` file, new folder, rename/move (edit the full archive path), duplicate,
|
|
108
|
+
replace, download, copy markdown link / image embed, set entry point (shown bold
|
|
109
|
+
in the tree), set/remove cover image, and delete with a confirmation prompt
|
|
110
|
+
(orphaned assets delete immediately). The entry-point document and
|
|
111
|
+
`manifest.json` cannot be deleted. Copy and Download remain available in
|
|
112
|
+
read-only contexts.
|
|
113
|
+
|
|
114
|
+
Drag and drop is supported in all directions: move files between folders, drop
|
|
115
|
+
OS files onto the pane to add them as assets, drag a tree file onto the editor
|
|
116
|
+
to insert a markdown link or image embed at the pointer, and drop an OS image
|
|
117
|
+
onto the editor to embed it like a paste.
|
|
118
|
+
|
|
119
|
+
The same operations are available programmatically: `removeFile()`,
|
|
120
|
+
`renameFile()` (rewrites markdown references, including a moved document's own
|
|
121
|
+
relative links), `setEntryPoint()`, and `setCoverImage()`.
|
|
122
|
+
|
|
123
|
+
## Conversion Hook
|
|
124
|
+
|
|
125
|
+
For plain-markdown sources, hosts can take over the markdown→MDZ conversion
|
|
126
|
+
flow (triggered by the nav button, Insert Image, or an image paste/drop):
|
|
127
|
+
|
|
128
|
+
```ts
|
|
129
|
+
const view = new MdzipWorkspaceView(container, {
|
|
130
|
+
onConversionRequested(action) {
|
|
131
|
+
// action.kind: 'navigation' | 'image-picker' | 'image-file' (with action.file)
|
|
132
|
+
return hostHandlesConversion(action); // true suppresses the built-in dialog
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Returning or resolving `false` (or omitting the callback) keeps the built-in
|
|
138
|
+
conversion dialog. Errors thrown by the hook are reported via `onFailed` and
|
|
139
|
+
fall back to the built-in dialog.
|
|
140
|
+
|
|
103
141
|
`MdzipRenderingService` uses `defaultSafeMarkdownRenderer` when no renderer is
|
|
104
142
|
injected. The default renderer sanitizes generated HTML and unsafe URL schemes.
|
|
105
143
|
|
package/dist/rendering.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../src/rendering.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../src/rendering.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;CACrE;AAED,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC7E;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAqCD,eAAO,MAAM,2BAA2B,EAAE,qBAYzC,CAAC;AAEF,qBAAa,qBAAqB;IACb,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,GAAE,qBAAmD;IAE1F,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB;CAQ9D"}
|
package/dist/rendering.js
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
|
-
import DOMPurify from '
|
|
1
|
+
import DOMPurify from 'dompurify';
|
|
2
2
|
import hljs from 'highlight.js';
|
|
3
3
|
import { Marked } from 'marked';
|
|
4
|
+
// In browsers the dompurify default export is already bound to the global
|
|
5
|
+
// window. In Node it is an unbound factory, so bind it to a host-provided DOM
|
|
6
|
+
// (e.g. jsdom assigned to globalThis.window) on first use.
|
|
7
|
+
let purifier = null;
|
|
8
|
+
function resolvePurifier() {
|
|
9
|
+
if (purifier) {
|
|
10
|
+
return purifier;
|
|
11
|
+
}
|
|
12
|
+
if (typeof DOMPurify.sanitize === 'function') {
|
|
13
|
+
purifier = DOMPurify;
|
|
14
|
+
return purifier;
|
|
15
|
+
}
|
|
16
|
+
const globalWindow = globalThis.window;
|
|
17
|
+
if (!globalWindow) {
|
|
18
|
+
throw new Error('DOMPurify requires a DOM. In non-browser environments, assign a DOM window (e.g. from jsdom) to globalThis.window before rendering.');
|
|
19
|
+
}
|
|
20
|
+
purifier = DOMPurify(globalWindow);
|
|
21
|
+
return purifier;
|
|
22
|
+
}
|
|
4
23
|
const marked = new Marked({
|
|
5
24
|
renderer: {
|
|
6
25
|
code(token) {
|
|
@@ -39,7 +58,7 @@ export const defaultSafeMarkdownRenderer = {
|
|
|
39
58
|
render(markdown) {
|
|
40
59
|
const rendered = marked.parse(markdown, { async: false });
|
|
41
60
|
const html = typeof rendered === 'string' ? rendered : escapeHtml(markdown);
|
|
42
|
-
return
|
|
61
|
+
return resolvePurifier().sanitize(html, {
|
|
43
62
|
USE_PROFILES: { html: true },
|
|
44
63
|
ADD_ATTR: ['class'],
|
|
45
64
|
FORBID_TAGS: ['base', 'embed', 'form', 'iframe', 'input', 'link', 'meta', 'object', 'script', 'style'],
|
package/dist/rendering.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../src/rendering.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"rendering.js","sourceRoot":"","sources":["../src/rendering.ts"],"names":[],"mappings":"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"}
|
package/dist/view-css.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-css.d.ts","sourceRoot":"","sources":["../src/view-css.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"view-css.d.ts","sourceRoot":"","sources":["../src/view-css.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,aAAa,QAk5CzB,CAAC"}
|
package/dist/view-css.js
CHANGED
|
@@ -15,6 +15,7 @@ export const WORKSPACE_CSS = `
|
|
|
15
15
|
|
|
16
16
|
display: flex;
|
|
17
17
|
flex-direction: column;
|
|
18
|
+
width: 100%;
|
|
18
19
|
height: 100%;
|
|
19
20
|
min-height: 520px;
|
|
20
21
|
background: var(--mdzip-editor-background-color);
|
|
@@ -185,6 +186,10 @@ export const WORKSPACE_CSS = `
|
|
|
185
186
|
top: 50%;
|
|
186
187
|
transform: translate(-50%, -50%);
|
|
187
188
|
gap: 2px;
|
|
189
|
+
/* Paint above the edit toolbar (z-index 6) with an opaque surface so any
|
|
190
|
+
residual overlap at unusual widths reads as a clean layered control. */
|
|
191
|
+
z-index: 7;
|
|
192
|
+
background: var(--mdzip-widget-background-color);
|
|
188
193
|
}
|
|
189
194
|
|
|
190
195
|
.mdzip-root .icon-toggle {
|
|
@@ -601,7 +606,7 @@ export const WORKSPACE_CSS = `
|
|
|
601
606
|
fill: currentColor;
|
|
602
607
|
}
|
|
603
608
|
|
|
604
|
-
.mdzip-root .
|
|
609
|
+
.mdzip-root .nav-context-menu {
|
|
605
610
|
position: fixed;
|
|
606
611
|
z-index: 200;
|
|
607
612
|
min-width: 190px;
|
|
@@ -613,7 +618,7 @@ export const WORKSPACE_CSS = `
|
|
|
613
618
|
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);
|
|
614
619
|
}
|
|
615
620
|
|
|
616
|
-
.mdzip-root .
|
|
621
|
+
.mdzip-root .nav-context-menu button {
|
|
617
622
|
display: block;
|
|
618
623
|
width: 100%;
|
|
619
624
|
min-height: 28px;
|
|
@@ -627,12 +632,38 @@ export const WORKSPACE_CSS = `
|
|
|
627
632
|
cursor: pointer;
|
|
628
633
|
}
|
|
629
634
|
|
|
630
|
-
.mdzip-root .
|
|
631
|
-
.mdzip-root .
|
|
635
|
+
.mdzip-root .nav-context-menu button:hover,
|
|
636
|
+
.mdzip-root .nav-context-menu button:focus-visible {
|
|
632
637
|
outline: none;
|
|
633
638
|
background: var(--mdzip-hover-background-color);
|
|
634
639
|
}
|
|
635
640
|
|
|
641
|
+
.mdzip-root .nav-menu-separator {
|
|
642
|
+
height: 1px;
|
|
643
|
+
margin: 4px 6px;
|
|
644
|
+
background: var(--mdzip-border-color);
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
.mdzip-root .nav-file.entry-point .nav-label {
|
|
648
|
+
font-weight: 600;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
.mdzip-root .nav-directory.pending-folder > summary {
|
|
652
|
+
opacity: 0.7;
|
|
653
|
+
}
|
|
654
|
+
|
|
655
|
+
.mdzip-root details.nav-directory.drag-over > summary,
|
|
656
|
+
.mdzip-root .nav-tree.drag-over {
|
|
657
|
+
background: var(--mdzip-hover-background-color);
|
|
658
|
+
border-radius: 4px;
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
.mdzip-root .title-dialog-actions .danger-action {
|
|
662
|
+
border-color: #b42318;
|
|
663
|
+
background: #b42318;
|
|
664
|
+
color: #ffffff;
|
|
665
|
+
}
|
|
666
|
+
|
|
636
667
|
.mdzip-root .mdzip-tooltip {
|
|
637
668
|
position: fixed;
|
|
638
669
|
z-index: 10000;
|
|
@@ -1190,6 +1221,13 @@ export const WORKSPACE_CSS = `
|
|
|
1190
1221
|
|
|
1191
1222
|
@media (max-width: 900px) {
|
|
1192
1223
|
.mdzip-root { --nav-pane-width: 220px; }
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
/* Stack the formatting toolbar onto its own row before the absolutely
|
|
1227
|
+
centered view-mode toggle can collide with it. Without the navigation pane
|
|
1228
|
+
the collision band starts just under ~1000px; with the (resizable, default
|
|
1229
|
+
280px) navigation pane open everything shifts right, so stack earlier. */
|
|
1230
|
+
@media (max-width: 1000px) {
|
|
1193
1231
|
.mdzip-root .toolbar {
|
|
1194
1232
|
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
|
|
1195
1233
|
row-gap: 4px;
|
|
@@ -1218,6 +1256,35 @@ export const WORKSPACE_CSS = `
|
|
|
1218
1256
|
}
|
|
1219
1257
|
}
|
|
1220
1258
|
|
|
1259
|
+
@media (max-width: 1280px) {
|
|
1260
|
+
.mdzip-root.navigation-pane-visible .toolbar {
|
|
1261
|
+
grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
|
|
1262
|
+
row-gap: 4px;
|
|
1263
|
+
}
|
|
1264
|
+
.mdzip-root.navigation-pane-visible .toolbar-start {
|
|
1265
|
+
display: contents;
|
|
1266
|
+
}
|
|
1267
|
+
.mdzip-root.navigation-pane-visible .toolbar-left {
|
|
1268
|
+
grid-column: 1;
|
|
1269
|
+
grid-row: 1;
|
|
1270
|
+
}
|
|
1271
|
+
.mdzip-root.navigation-pane-visible .edit-toolbar {
|
|
1272
|
+
grid-column: 1 / -1;
|
|
1273
|
+
grid-row: 2;
|
|
1274
|
+
justify-self: start;
|
|
1275
|
+
position: static;
|
|
1276
|
+
transform: none;
|
|
1277
|
+
}
|
|
1278
|
+
.mdzip-root.navigation-pane-visible .view-mode-toggle-group {
|
|
1279
|
+
position: static;
|
|
1280
|
+
transform: none;
|
|
1281
|
+
}
|
|
1282
|
+
.mdzip-root.navigation-pane-visible .toolbar-controls {
|
|
1283
|
+
grid-column: 3;
|
|
1284
|
+
grid-row: 1;
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
|
|
1221
1288
|
@media (prefers-reduced-motion: reduce) {
|
|
1222
1289
|
.mdzip-root .nav-pane,
|
|
1223
1290
|
.mdzip-root .nav-resizer {
|
|
@@ -1240,6 +1307,89 @@ export const WORKSPACE_CSS = `
|
|
|
1240
1307
|
}
|
|
1241
1308
|
}
|
|
1242
1309
|
|
|
1310
|
+
@media print {
|
|
1311
|
+
.mdzip-root {
|
|
1312
|
+
height: auto;
|
|
1313
|
+
min-height: 0;
|
|
1314
|
+
overflow: visible;
|
|
1315
|
+
display: block;
|
|
1316
|
+
background: #ffffff;
|
|
1317
|
+
color: #000000;
|
|
1318
|
+
}
|
|
1319
|
+
|
|
1320
|
+
.mdzip-root .toolbar,
|
|
1321
|
+
.mdzip-root .document-strip,
|
|
1322
|
+
.mdzip-root .nav-pane,
|
|
1323
|
+
.mdzip-root .nav-resizer,
|
|
1324
|
+
.mdzip-root .split-resizer,
|
|
1325
|
+
.mdzip-root .edit-pane,
|
|
1326
|
+
.mdzip-root .edit-toolbar,
|
|
1327
|
+
.mdzip-root .mdzip-tooltip,
|
|
1328
|
+
.mdzip-root .nav-context-menu,
|
|
1329
|
+
.mdzip-root .title-dialog-backdrop,
|
|
1330
|
+
.mdzip-root .zoom-popover {
|
|
1331
|
+
display: none !important;
|
|
1332
|
+
}
|
|
1333
|
+
|
|
1334
|
+
.mdzip-root .workspace-shell {
|
|
1335
|
+
display: block;
|
|
1336
|
+
}
|
|
1337
|
+
|
|
1338
|
+
.mdzip-root .pane-stack,
|
|
1339
|
+
.mdzip-root .pane-stack.split-mode {
|
|
1340
|
+
display: block;
|
|
1341
|
+
height: auto;
|
|
1342
|
+
}
|
|
1343
|
+
|
|
1344
|
+
.mdzip-root .preview-pane {
|
|
1345
|
+
display: block !important;
|
|
1346
|
+
overflow: visible;
|
|
1347
|
+
height: auto;
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
.mdzip-root .preview-content {
|
|
1351
|
+
max-width: 100%;
|
|
1352
|
+
padding: 0;
|
|
1353
|
+
font-size: 11pt;
|
|
1354
|
+
line-height: 1.6;
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1357
|
+
.mdzip-root .preview-content h1,
|
|
1358
|
+
.mdzip-root .preview-content h2,
|
|
1359
|
+
.mdzip-root .preview-content h3,
|
|
1360
|
+
.mdzip-root .preview-content h4,
|
|
1361
|
+
.mdzip-root .preview-content h5,
|
|
1362
|
+
.mdzip-root .preview-content h6 {
|
|
1363
|
+
page-break-after: avoid;
|
|
1364
|
+
color: #000000;
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1367
|
+
.mdzip-root .preview-content pre,
|
|
1368
|
+
.mdzip-root .preview-content blockquote,
|
|
1369
|
+
.mdzip-root .preview-content img,
|
|
1370
|
+
.mdzip-root .preview-content table {
|
|
1371
|
+
page-break-inside: avoid;
|
|
1372
|
+
}
|
|
1373
|
+
|
|
1374
|
+
.mdzip-root .preview-content pre,
|
|
1375
|
+
.mdzip-root .preview-content code {
|
|
1376
|
+
white-space: pre-wrap;
|
|
1377
|
+
word-break: break-word;
|
|
1378
|
+
background: #f6f8fa;
|
|
1379
|
+
color: #000000;
|
|
1380
|
+
border-color: #d0d7de;
|
|
1381
|
+
}
|
|
1382
|
+
|
|
1383
|
+
.mdzip-root .preview-content a {
|
|
1384
|
+
color: #000000;
|
|
1385
|
+
text-decoration: underline;
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
.mdzip-root .preview-content img {
|
|
1389
|
+
max-width: 100%;
|
|
1390
|
+
}
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1243
1393
|
/* Syntax highlighting for code blocks in preview (highlight.js) */
|
|
1244
1394
|
.mdzip-root .preview-content pre code {
|
|
1245
1395
|
display: block;
|
package/dist/view-css.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-css.js","sourceRoot":"","sources":["../src/view-css.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,UAAU,CAC/D,UAAU,EACV,kBAAkB,CACnB,CAAC;AACF,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,UAAU,CAC7D,UAAU,EACV,kBAAkB,CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;IAUzB,mBAAmB
|
|
1
|
+
{"version":3,"file":"view-css.js","sourceRoot":"","sources":["../src/view-css.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,UAAU,CAC/D,UAAU,EACV,kBAAkB,CACnB,CAAC;AACF,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,UAAU,CAC7D,UAAU,EACV,kBAAkB,CACnB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;IAUzB,mBAAmB;;;;;;;;;;;;;;;;;IAiBnB,wBAAwB;;;;;IAKxB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAk3C1B,CAAC"}
|
package/dist/view.d.ts
CHANGED
|
@@ -6,6 +6,14 @@ export type MdzipNavigationMode = 'editor' | 'host' | 'none';
|
|
|
6
6
|
export type MdzipColorScheme = 'light' | 'dark';
|
|
7
7
|
export type MdzipHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
|
|
8
8
|
export type MdzipEditorCommand = 'bold' | 'italic' | 'strikethrough' | 'paragraph' | `heading-${MdzipHeadingLevel}` | 'bullet-list' | 'ordered-list' | 'inline-code' | 'code-block' | 'blockquote' | 'link' | 'insert-image';
|
|
9
|
+
export type MdzipConversionAction = {
|
|
10
|
+
kind: 'navigation';
|
|
11
|
+
} | {
|
|
12
|
+
kind: 'image-picker';
|
|
13
|
+
} | {
|
|
14
|
+
kind: 'image-file';
|
|
15
|
+
file: File;
|
|
16
|
+
};
|
|
9
17
|
export type MdzipControlPreset = 'preview' | 'viewer' | 'standalone-editor' | 'hosted-editor' | 'custom';
|
|
10
18
|
export interface MdzipTitleControlPolicy {
|
|
11
19
|
visible?: boolean;
|
|
@@ -43,6 +51,8 @@ export interface MdzipControlPolicy {
|
|
|
43
51
|
zoom?: boolean;
|
|
44
52
|
colorScheme?: boolean;
|
|
45
53
|
orphanActions?: boolean;
|
|
54
|
+
/** Enables nav-pane file management (create, rename, delete, move, …). */
|
|
55
|
+
fileActions?: boolean;
|
|
46
56
|
}
|
|
47
57
|
export interface MdzipResolvedTitleControlPolicy {
|
|
48
58
|
visible: boolean;
|
|
@@ -78,6 +88,7 @@ export interface MdzipResolvedControlPolicy {
|
|
|
78
88
|
zoom: boolean;
|
|
79
89
|
colorScheme: boolean;
|
|
80
90
|
orphanActions: boolean;
|
|
91
|
+
fileActions: boolean;
|
|
81
92
|
}
|
|
82
93
|
export interface MdzipWorkspaceChange {
|
|
83
94
|
bytes: Uint8Array;
|
|
@@ -98,6 +109,20 @@ export interface MdzipWorkspaceViewOptions {
|
|
|
98
109
|
onWorkspaceChanged?: (event: MdzipDocumentChangeEvent) => void;
|
|
99
110
|
onDocumentChanged?: (event: MdzipDocumentChangeEvent) => void;
|
|
100
111
|
onAssetChanged?: (event: MdzipDocumentChangeEvent) => void;
|
|
112
|
+
/**
|
|
113
|
+
* Fires when a change event includes the manifest.
|
|
114
|
+
*
|
|
115
|
+
* Registering this callback also opts in to host-delegated manifest
|
|
116
|
+
* persistence: for manifest-only events (`changes` is exactly
|
|
117
|
+
* `['manifest']`), the view skips the `exportBytes()`/`onChanged` path —
|
|
118
|
+
* which on a workspace opened without `archiveBytes` would rebuild the
|
|
119
|
+
* whole archive and resolve every lazy document — and expects the host to
|
|
120
|
+
* apply the manifest change where the real archive bytes live (e.g. via
|
|
121
|
+
* `MdzArchiveCore.updateFiles(bytes, [], [], { manifest })` or
|
|
122
|
+
* `updateManifestTitleInArchive`). Read the new manifest from
|
|
123
|
+
* `event.snapshot.workspace.manifest`. Hosts that do not register this
|
|
124
|
+
* callback keep the full `onChanged` behavior for manifest edits.
|
|
125
|
+
*/
|
|
101
126
|
onManifestChanged?: (event: MdzipDocumentChangeEvent) => void;
|
|
102
127
|
onSnapshotChanged?: (snapshot: MdzipWorkspaceSnapshot) => void;
|
|
103
128
|
onSelectionChanged?: (snapshot: MdzipWorkspaceSnapshot) => void;
|
|
@@ -105,6 +130,15 @@ export interface MdzipWorkspaceViewOptions {
|
|
|
105
130
|
onValidationChanged?: (snapshot: MdzipWorkspaceSnapshot) => void;
|
|
106
131
|
onColorSchemeChanged?: (colorScheme: MdzipColorScheme) => void;
|
|
107
132
|
onFailed?: (error: unknown) => void;
|
|
133
|
+
/**
|
|
134
|
+
* Lets the host take over the markdown→MDZ conversion flow (triggered by the
|
|
135
|
+
* nav button, the Insert Image control, or an image paste on a plain `.md`
|
|
136
|
+
* source). Return or resolve `true` to suppress the built-in conversion
|
|
137
|
+
* dialog — the host owns the flow from there. Return `false` (or omit the
|
|
138
|
+
* callback) to keep the built-in dialog. If the callback throws or rejects,
|
|
139
|
+
* the error is reported via `onFailed` and the built-in dialog is shown.
|
|
140
|
+
*/
|
|
141
|
+
onConversionRequested?: (action: MdzipConversionAction) => boolean | Promise<boolean>;
|
|
108
142
|
}
|
|
109
143
|
export declare function resolveMdzipControlPolicy(controls: MdzipControlPreset | MdzipControlPolicy | undefined): MdzipResolvedControlPolicy;
|
|
110
144
|
export declare class MdzipWorkspaceView {
|
|
@@ -113,7 +147,6 @@ export declare class MdzipWorkspaceView {
|
|
|
113
147
|
private readonly options;
|
|
114
148
|
private readonly controlPolicy;
|
|
115
149
|
private readonly navigationMode;
|
|
116
|
-
private pendingOrphanPath;
|
|
117
150
|
private layout;
|
|
118
151
|
private navVisible;
|
|
119
152
|
private zoom;
|
|
@@ -126,7 +159,14 @@ export declare class MdzipWorkspaceView {
|
|
|
126
159
|
private navPaneWidth;
|
|
127
160
|
private splitRatio;
|
|
128
161
|
private resizing;
|
|
129
|
-
private
|
|
162
|
+
private navMenuState;
|
|
163
|
+
private nameDialogState;
|
|
164
|
+
private deleteDialogState;
|
|
165
|
+
private readonly pendingNewFolders;
|
|
166
|
+
private pendingReplacePath;
|
|
167
|
+
private conversionHookPending;
|
|
168
|
+
private dragSourcePath;
|
|
169
|
+
private dragOverElement;
|
|
130
170
|
private tooltipState;
|
|
131
171
|
private tooltipShowTimer;
|
|
132
172
|
private tooltipHideTimer;
|
|
@@ -175,7 +215,16 @@ export declare class MdzipWorkspaceView {
|
|
|
175
215
|
private readonly elMetadataList;
|
|
176
216
|
private readonly elConversionDialog;
|
|
177
217
|
private readonly elConversionConfirmBtn;
|
|
178
|
-
private readonly
|
|
218
|
+
private readonly elNavMenu;
|
|
219
|
+
private readonly elNameDialog;
|
|
220
|
+
private readonly elNameDialogHeading;
|
|
221
|
+
private readonly elNameInput;
|
|
222
|
+
private readonly elNameValidation;
|
|
223
|
+
private readonly elNameConfirmBtn;
|
|
224
|
+
private readonly elDeleteDialog;
|
|
225
|
+
private readonly elDeleteDialogText;
|
|
226
|
+
private readonly elDeleteConfirmBtn;
|
|
227
|
+
private readonly elReplaceInput;
|
|
179
228
|
private readonly elTooltip;
|
|
180
229
|
private readonly elEmptyState;
|
|
181
230
|
constructor(container: HTMLElement, options?: MdzipWorkspaceViewOptions);
|
|
@@ -198,9 +247,21 @@ export declare class MdzipWorkspaceView {
|
|
|
198
247
|
*
|
|
199
248
|
* Assets must expose either `readDataUri` or `readBytes` so that subsequent
|
|
200
249
|
* ZIP rebuilds (e.g. on paste or asset removal) can read their bytes.
|
|
250
|
+
* Since 1.2.7, non-entry-point documents are lazy when the workspace was
|
|
251
|
+
* opened with `includeLazyDocumentReaders`: `text` is `''`, `isLazy` is
|
|
252
|
+
* `true`, and the content is only reachable via the `readText()` closure.
|
|
201
253
|
* Fields present at runtime but absent from the TypeScript interface —
|
|
202
254
|
* `validation`, `orphanedAssets`, and `asset.kind` — must be preserved on the
|
|
203
255
|
* workspace object or operations that depend on them will fail.
|
|
256
|
+
*
|
|
257
|
+
* WARNING: `readText`, `readBytes`, and `readDataUri` are closures and do
|
|
258
|
+
* not survive serialization boundaries such as `postMessage` to a webview.
|
|
259
|
+
* Hosts that serialize the workspace must materialize them first — resolve
|
|
260
|
+
* `readText()` into `text` for each document and `readDataUri()` into a data
|
|
261
|
+
* field for each asset — or rehydrate the reader functions on the far side.
|
|
262
|
+
* A document that arrives with `isLazy: true`, empty `text`, and no
|
|
263
|
+
* `readText` makes opening or archive rebuilds throw
|
|
264
|
+
* `ERR_LAZY_TEXT_UNAVAILABLE` instead of silently producing an empty file.
|
|
204
265
|
*/
|
|
205
266
|
openWorkspace(workspace: MdzWorkspace, options?: MdzipWorkspaceOpenOptions): Promise<void>;
|
|
206
267
|
flush(): Promise<MdzipEditorSnapshot | null>;
|
|
@@ -210,6 +271,10 @@ export declare class MdzipWorkspaceView {
|
|
|
210
271
|
addAsset(archivePath: string, fileBytes: Uint8Array): Promise<void>;
|
|
211
272
|
replaceAsset(archivePath: string, fileBytes: Uint8Array): Promise<boolean>;
|
|
212
273
|
removeAsset(archivePath: string, options?: MdzipRemoveAssetOptions): Promise<boolean>;
|
|
274
|
+
removeFile(archivePath: string): Promise<boolean>;
|
|
275
|
+
renameFile(oldPath: string, newPath: string): Promise<boolean>;
|
|
276
|
+
setEntryPoint(archivePath: string): Promise<boolean>;
|
|
277
|
+
setCoverImage(archivePath: string | null): Promise<boolean>;
|
|
213
278
|
listAssets(): MdzWorkspaceAsset[];
|
|
214
279
|
canExecuteCommand(command: MdzipEditorCommand): boolean;
|
|
215
280
|
executeCommand(command: MdzipEditorCommand, file?: File): Promise<boolean>;
|
|
@@ -218,6 +283,8 @@ export declare class MdzipWorkspaceView {
|
|
|
218
283
|
destroy(): void;
|
|
219
284
|
private createCmEditor;
|
|
220
285
|
private render;
|
|
286
|
+
private allowFileActions;
|
|
287
|
+
private prunePendingFolders;
|
|
221
288
|
private attachEvents;
|
|
222
289
|
private prepareTooltips;
|
|
223
290
|
private openPath;
|
|
@@ -232,6 +299,7 @@ export declare class MdzipWorkspaceView {
|
|
|
232
299
|
private saveTitle;
|
|
233
300
|
private renderMetadata;
|
|
234
301
|
private requestMdzConversion;
|
|
302
|
+
private openConversionDialog;
|
|
235
303
|
private confirmMdzConversion;
|
|
236
304
|
private handlePaste;
|
|
237
305
|
private insertImageFile;
|
|
@@ -247,11 +315,42 @@ export declare class MdzipWorkspaceView {
|
|
|
247
315
|
private notifyChanged;
|
|
248
316
|
private initialWorkspaceEvent;
|
|
249
317
|
private setZoom;
|
|
250
|
-
|
|
318
|
+
/**
|
|
319
|
+
* Sets the active color scheme after construction.
|
|
320
|
+
*
|
|
321
|
+
* Use for host-driven theme synchronization — e.g. a VS Code webview
|
|
322
|
+
* reacting to `data-vscode-theme-kind` changes via MutationObserver — so the
|
|
323
|
+
* editor follows the host theme without being recreated (recreation would
|
|
324
|
+
* destroy the CodeMirror instance and lose unsaved edits). No-op when the
|
|
325
|
+
* scheme is unchanged. Does not fire `onColorSchemeChanged`, which only
|
|
326
|
+
* reports user-initiated toggles from the built-in toolbar buttons.
|
|
327
|
+
*/
|
|
328
|
+
setColorScheme(colorScheme: MdzipColorScheme): void;
|
|
329
|
+
private setColorSchemeFromToolbar;
|
|
251
330
|
private setLayout;
|
|
252
|
-
private
|
|
331
|
+
private navMenuTargetFromElement;
|
|
332
|
+
private fileMenuTarget;
|
|
333
|
+
private showNavMenuForPath;
|
|
334
|
+
private showNavMenu;
|
|
335
|
+
private navMenuItems;
|
|
336
|
+
private handleNavMenuAction;
|
|
337
|
+
private openNameDialog;
|
|
338
|
+
private validateNameDialog;
|
|
339
|
+
private confirmNameDialog;
|
|
340
|
+
private deleteFile;
|
|
341
|
+
private markdownLinkSnippet;
|
|
342
|
+
private copyMarkdownLink;
|
|
343
|
+
private canAcceptEditorDrop;
|
|
344
|
+
private insertArchiveLinkAtCoords;
|
|
345
|
+
private handleEditorImageDrop;
|
|
346
|
+
private downloadArchiveFile;
|
|
347
|
+
private duplicateFile;
|
|
348
|
+
private replaceFileFromPicker;
|
|
349
|
+
private attachNavDragAndDrop;
|
|
350
|
+
private setDragOverElement;
|
|
351
|
+
private moveFileToDirectory;
|
|
352
|
+
private addDroppedFiles;
|
|
253
353
|
private validLayoutForSnapshot;
|
|
254
|
-
private removeOrphan;
|
|
255
354
|
private syncScrollFromPreview;
|
|
256
355
|
private syncScrollToPreview;
|
|
257
356
|
}
|
package/dist/view.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGtE,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../src/view.ts"],"names":[],"mappings":"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"}
|